package com.littcore.saap.system.biz;

import java.util.Locale;

import me.chanjar.weixin.mp.bean.result.WxMpPayCallback;

import com.littcore.saap.system.bo.TenantActiveBo;
import com.littcore.saap.system.bo.TenantQuitBo;
import com.littcore.saap.system.po.TenantMember;
import com.littcore.saap.system.po.TenantOrder;
import com.littcore.saap.system.po.UserInfo;
import com.littcore.saap.system.vo.PermissionTreeVo;

/**
 * .
 * 
 * <pre><b>描述：</b>
 *    
 * </pre>
 * 
 * <pre><b>修改记录：</b>
 *    
 * </pre>
 * 
 * @author <a href="mailto:littcai@hotmail.com">蔡源</a>
 * @since 2013-11-14
 * @version 1.0
 */
public interface ITenantBizService {
    
  public void onPayResult(WxMpPayCallback callBack);
	
	public void saveMember(UserInfo userInfo, int memberType);
	
	public void updateMember(TenantMember tenantMember, UserInfo userInfo, String newpassword);
	
	public void deleteMember(Integer tenantMemberId) throws Exception;
	
  public void freezeMember(Integer tenantMemberId) throws Exception;
	
	public void deleteMemberBatch(Integer[] ids) throws Exception;
	
	public void doResumeMember(Integer tenantMemberId);
	/**
	 * 根据订单号激活租户空间
	 * @param orderNo
	 */
	
	public void doActivate(String orderNo);

	/**
	 * 根据订单号激活.
	 * 
	 * FIXME 订单号已经能知道是哪个用户，但是订单模块没做，因此用户ID还需传入
	 *
	 * @param orderNo the order no
	 * @param userId the user id
	 */
	

	public TenantActiveBo doActivateNewSpace(String orderNo, Integer userId, Locale locale);
	
	/**
	 * 升级用户权限.
	 * 
	 * 系统升级后，可能增加或移除的一些功能，需要对现有用户的权限做相应的升级操作。
	 *
	 * @return the tenant active bo
	 */
	public void doUpgradePermission();
	
	/**
	 * 注销租户空间.
	 *
	 * @param userId 用户ID
	 * @param tenantId 租户ID
	 */
	public TenantQuitBo doDeactivate(Integer userId, Integer tenantId);
	
	
	 public void doLock(Integer userId, Integer tenantId);
	 
	 
	 public void doUnLock(Integer userId, Integer tenantId);
	
	/**
	 * Do quit.
	 *
	 * @param tenantId the tenant id
	 * @param userId the user id
	 * @return the tenant quit bo
	 */
	public TenantQuitBo doQuit(int tenantId, int userId);
	
	/**
	 * 获得租户权限集.
	 *
	 * @param tenantId the tenant id
	 */
	public PermissionTreeVo findTenantPermissionTree(int tenantId);
	
	/**
	 * 获得租户权限集.
	 *
	 * @param tenantId the tenant id
	 */
	public PermissionTreeVo findTenantPermissionTree(int tenantId, int roleId);
	
	 public TenantActiveBo  doCreateNewSpace(TenantOrder order);
	 
	 
	 /** 
	  * 续费
	  * @param order
	  */
	 public void doReNew(TenantOrder order);
	 
	 
	 /** 
	  * 根据订单创建Tenant
	  * @param order
	  */
	 public int doCreateTenant(TenantOrder order);
	 

}